package ioc07;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

/**
 * Author:shixiaojun@itany.com
 * Date:2022/5/16 15:50
 * Version:1.0-SNAPSHOT
 * Description:
 */
public class Test {

    public static void main(String[] args) {
//        SomeBean someBean = new SomeBean();
        ClassPathXmlApplicationContext ac = new ClassPathXmlApplicationContext("ioc07/spring.xml");
        SomeBean someBean = (SomeBean) ac.getBean("someBean");
//        someBean.a();


        // 在Java中,无法强制gc执行销毁
        // 只能做建议
//        System.gc();
//        Runtime.getRuntime().gc();

        // 在Spring中,可以主动销毁
        // Spring中提供了两种销毁方法
        // 方式一:立刻销毁,该方式已过时
        // 该方法表示当执行到此处时立刻销毁
        // 不管后面是否需要用到容器的内容
//        ac.destroy();
//        SomeBean someBean2 = (SomeBean) ac.getBean("someBean");
        // 方式二:延迟销毁
        // 该方法表示当执行到此处时不会立刻进行销毁
        // 而是相当于生成了一个销毁的标记
        // 当JVM停止工作时,查看当前是否存在销毁标记
        // 如果存在销毁标记,才会进行销毁
        ac.registerShutdownHook();
//        SomeBean someBean2 = (SomeBean) ac.getBean("someBean");
        while (true){

        }
    }

}
